<?php

class DB_Functions {

    private $db;

    //put your code here
    // constructor
    function __construct() {
        require_once 'DB_Connect.php';
        // connecting to database
        $this->db = new DB_Connect();
        $this->db->connect();
    }

    // destructor
    function __destruct() {
        
    }

    /**
     * Storing new user
     * returns user details
     */
    public function storeUser($name, $email, $password) {
        $uuid = uniqid('', true);
        $hash = $this->hashSSHA($password);
        $encrypted_password = $hash["encrypted"]; // encrypted password
        $salt = $hash["salt"]; // salt
        $result = mysql_query("INSERT INTO usuarios(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())");
        // check for successful store
        if ($result) {
            // get user details 
            $uid = mysql_insert_id(); // last inserted id
            $result = mysql_query("SELECT * FROM usuarios WHERE uid = $uid");
            // return user details
            return mysql_fetch_array($result);
        } else {
            return false;
        }
    }

    public function actualizarPerfil($id, $nombres, $apellidos, $clave, $correo, $tel, $dir) {
        $sql = "UPDATE usuario SET nombres='$nombres', apellidos='$apellidos', clave='" . md5($clave) . "', correo='$correo', telefono='$tel', direccion='$dir' WHERE idusuario='$id'";
        $sql2 = "UPDATE usuario SET nombres='$nombres', apellidos='$apellidos', correo='$correo', telefono='$tel', direccion='$dir' WHERE idusuario='$id'";

        if ($clave != null) {
            mysql_query($sql);
            return 'ok';
        } else if ($clave == null) {
            mysql_query($sql2);
            return 'ok';
        } else {
            echo false;
        }
    }

    public function actualizarHorario($id, $inicio, $fin) {
        $sql = "UPDATE horario SET inicio='$inicio', fin='$fin' WHERE idhorario='$id'";
        $sql2 = "SELECT * FROM horario WHERE idhorario='$id'";

        if ($inicio != null && $fin != null) {
            mysql_query($sql);
            $resultado = mysql_query($sql2);
            while ($fila = mysql_fetch_array($resultado)) {
                return $fila;
            }
        } else {
            echo false;
        }
    }

    public function crearGrupo($nombres, $porcentaje) {
        $result = mysql_query("INSERT INTO grupo VALUES(null,'$nombres','$porcentaje',1);");
        // verificación de almacenamiento de la ubicación
        return 'ok';
    }

    public function crearGrupoUsuario($usuario, $id) {
        try {
            $result = mysql_query("INSERT INTO grupousuario VALUES('$usuario','$id');");
            // verificación de almacenamiento de la ubicación
            return 'ok';
        } catch (Exception $ex) {
            return 'error';
        }
    }
	
	public function crearcalificarGrupo($id, $nota, $observacion) {
        try {
            $result = mysql_query("INSERT INTO calificaciongrupo VALUES(NULL,'$id','$nota','$observacion');");
            // verificación de almacenamiento de la ubicación
            return 'ok';
        } catch (Exception $ex) {
            return 'error';
        }
    }

    public function crearUsuario($nombres, $apellidos, $clave, $correo, $tel, $dir, $rol, $indhabilitado) {
        $result = mysql_query("INSERT INTO usuario VALUES(null,'$rol','$nombres','$apellidos','$correo',md5('$clave'),'$dir','$tel','$indhabilitado');");
        // verificación de almacenamiento de la ubicación
        return 'ok';
    }

    public function consultarHorarios($uid) {
        $result = mysql_query("SELECT * FROM horariousuario WHERE idusuario='" . $uid . "'");
        $horarios = array();

        if (mysql_num_rows($result)) {
            while ($horario = mysql_fetch_assoc($result)) {
                $horarios[] = array('horario' => $horario);
            }
            return $horarios;
        } else {
            return false;
        }
    }

    public function borrarPunto($id) {
        $result = mysql_query("DELETE FROM horariousuario WHERE idhorariousr='" . $id . "'");

        if ($result) {
            return true;
        } else {
            return false;
        }
    }

    public function almacenarHorario($materia, $salon, $dia, $inicio, $fin, $latitud, $longitud, $idusuario) {
        $result = mysql_query("INSERT INTO horariousuario(materia, salon, dia,inicio,fin,latitud,longitud,idusuario) VALUES('$materia','$salon','$dia','$inicio','$fin','$latitud','$longitud','$idusuario')");
        // verificación de almacenamiento de la ubicación
        if ($result) {
            $id = mysql_insert_id(); // last inserted id
            $result = mysql_query("SELECT * FROM horariousuario WHERE idhorariousr = $id");
            // retorna los datos ingresado
            return mysql_fetch_array($result);
        } else {
            return false;
        }
    }

    /**
     * se verifica que los datos proporcionados por el usuario
     * sean los mismos que están en la base de datos
     */
    public function getUserByEmailAndPassword($email, $password) {
        $enc = md5($password);
        $result = mysql_query("SELECT * FROM usuario WHERE correo='$email' AND clave='$enc'") or die(mysql_error());

        while ($fila = mysql_fetch_array($result)) {
            return $fila;
        }
    }

    /**
     * Check user is existed or not
     */
    public function isUserExisted($email) {
        $result = mysql_query("SELECT email from usuarios WHERE email = '$email'");
        $no_of_rows = mysql_num_rows($result);
        if ($no_of_rows > 0) {
            // user existed 
            return true;
        } else {
            // user not existed
            return false;
        }
    }

    /**
     * Encrypting password
     * @param password
     * returns salt and encrypted password
     */
    public function hashSSHA($password) {

        $salt = sha1(rand());
        $salt = substr($salt, 0, 10);
        $encrypted = base64_encode(sha1($password . $salt, true) . $salt);
        $hash = array("salt" => $salt, "encrypted" => $encrypted);
        return $hash;
    }

    /**
     * Decrypting password
     * @param salt, password
     * returns hash string
     */
    public function checkhashSSHA($salt, $password) {

        $hash = base64_encode(sha1($password . $salt, true) . $salt);

        return $hash;
    }

}

?>